Load Data

library(plotly)
data <- diamonds[sample(nrow(diamonds), 2500), 
                 c("carat", "price", "clarity", "depth")]
summary(data)
     carat            price            clarity        depth      
 Min.   :0.2000   Min.   :  337.0   SI1    :621   Min.   :44.00  
 1st Qu.:0.4000   1st Qu.:  951.8   VS2    :587   1st Qu.:61.00  
 Median :0.7000   Median : 2381.0   SI2    :447   Median :61.80  
 Mean   :0.7955   Mean   : 3885.1   VS1    :353   Mean   :61.72  
 3rd Qu.:1.0400   3rd Qu.: 5263.2   VVS2   :233   3rd Qu.:62.50  
 Max.   :3.0100   Max.   :18741.0   VVS1   :144   Max.   :72.20  
                                    (Other):115                  

Creating 2D and 3D Scatter Plots

p1 <- plot_ly(data, x = ~carat, y = ~price, color = ~carat,
        size = ~carat, text = ~paste("Clarity: ", clarity))

p2 <- plot_ly(data, x = ~carat, y = ~price, z = ~depth,
        color = ~carat, size = ~carat, 
        text = ~paste("Clarity: ", clarity)) 

2D Scatter Plot

3D Scatter Plot